@echo off
chcp 65001
title 云打印系统服务安装

:: 检查管理员权限
net session >nul 2>&1
if %errorlevel% neq 0 (
    echo 错误: 请以管理员身份运行此脚本!
    echo 请右键点击此批处理文件并选择"以管理员身份运行"。
    pause
    exit /b 1
)

:: 确定服务可执行文件路径
set "SERVICE_EXE=%~dp0cloud_print_service.exe"
if not exist "%SERVICE_EXE%" (
    if exist "%~dp0build\exe\cloud_print_service.exe" (
        set "SERVICE_EXE=%~dp0build\exe\cloud_print_service.exe"
        echo 找到服务可执行文件: %SERVICE_EXE%
    ) else (
        echo 错误: 未找到服务可执行文件!
        echo 请确保已成功构建应用程序。
        pause
        exit /b 1
    )
)

:: 使用完全不同的服务名称，避开旧服务名称冲突
set "SERVICE_NAME=CloudPrintSvc"

echo 正在停止现有服务(如果存在)...
sc stop %SERVICE_NAME% >nul 2>&1
timeout /t 5 >nul

echo 正在移除现有服务(如果存在)...
sc delete %SERVICE_NAME% >nul 2>&1
timeout /t 10 >nul

:: 检查服务是否已完全删除
echo 正在确认服务已完全删除...
sc query %SERVICE_NAME% >nul 2>&1
if %errorlevel% equ 0 (
    echo 服务仍在删除过程中，等待额外时间...
    timeout /t 20 >nul
)

echo 正在安装云打印系统服务...
echo 使用可执行文件: %SERVICE_EXE%

:: 使用SC命令创建服务
sc create %SERVICE_NAME% binPath= "%SERVICE_EXE%" DisplayName= "云打印系统服务" start= auto
if %errorlevel% neq 0 (
    echo 错误: 服务创建失败
    echo 错误代码: %errorlevel%
    echo 可能需要重启计算机后再尝试安装服务。
    pause
    exit /b 1
)

echo 正在配置服务...
sc description %SERVICE_NAME% "提供云打印功能的后台服务，支持多用户远程打印"

:: 创建日志目录
set "LOG_DIR=%~dp0logs"
if not exist "%LOG_DIR%" (
    mkdir "%LOG_DIR%" 2>nul
    echo 已创建日志目录: %LOG_DIR%
)

echo 正在启动服务...
net start %SERVICE_NAME%
if %errorlevel% neq 0 (
    echo 警告: 服务启动失败，请手动启动服务或检查服务日志
) else (
    echo 服务已成功启动
)

echo.
echo 云打印系统服务已安装！
echo.
echo 服务名称: %SERVICE_NAME%
echo 服务状态: 已启动/已安装
echo 服务类型: 自动启动
echo.
echo 您可以运行create_shortcut.bat创建桌面快捷方式，通过浏览器访问云打印系统。
echo.
pause 